#include <bits/stdc++.h>
// 2025/02/08
// tag:
// Author: Zhang Muen
using namespace std;

using int64 = int64_t;

#define int long long

int M, n, ans, k, arms[101][2], bomb[101][2], estimate[102], f[101][101], match[101];
bool connect[101][101], cover[101][101], vis[101];

inline int power(int x)
{
    return x * x;
}

void init()
{
    for (int i = 1; i <= M; i++)
        for (int j = 1; j <= n; j++)
            if (power(arms[i][0] - bomb[j][0]) + power(arms[i][1] - bomb[j][1]) <= power(k))
                connect[i][j] = true;
    for (int i = 1; i <= n; i++)
        for (int j = M; j >= 1; j--)
            if (connect[j][i])
                f[i][j] = max(j, f[i][j + 1]);
    memset(estimate, 0x3f, sizeof(estimate));
    estimate[M + 1] = 0;
    for (int i = M; i >= 1; i--)
        for (int j = 1; j <= n; j++)
            if (connect[i][j])
                estimate[i] = min(estimate[i], estimate[f[j][i] + 1] + 1);
}

bool check(int x)
{
    for (int i = 1; i <= n; i++) {
        if (cover[i][x] && vis[i]) {
            vis[i] = false;
            if (match[i] == -1 || check(match[i])) {
                match[i] = x;
                return true;
            }
        }
    }
    return false;
}

void update(int x, int y, int i, bool type, int* m2)
{
    for (int j = 1; j <= n; j++) {
        if (type)
            m2[j] = match[j];
        else
            match[j] = m2[j];
        if (connect[x][j] && f[j][x] >= i)
            cover[j][y + 1] = type;
    }
}

void dfs(int x, int y)
{
    if (y + estimate[x] >= ans)
        return;
    if (x > M) {
        ans = y;
        return;
    }
    int m2[101];
    for (int i = x; i <= M; i++) {
        update(x, y, i, true, m2);
        memset(vis, true, sizeof(vis));
        if (check(y + 1))
            dfs(i + 1, y + 1);
        update(x, y, i, false, m2);
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> M >> n >> k;
    for (int i = 1; i <= M; i++)
        cin >> arms[i][0] >> arms[i][1];
    for (int i = 1; i <= n; i++)
        cin >> bomb[i][0] >> bomb[i][1];
    init();
    ans = n;
    memset(match, -1, sizeof(match));
    dfs(1, 0);
    cout << ans;
    return 0;
}